package com.cskaoyan.javase.oop3._2inner._2static._1basic;

/**
 * 在具体讲解静态内部类的访问特点之前,先明确以下两个原则:
 *      1.内部类和外围类是"好兄弟"，它们之间的访问不受访问权限限制，包括私有。
 *      2.静态内部类和外围类没有关系,它们之间的互相访问,就看成两个独立的,不受权限限制的,类之间的访问
 *
 * 静态内部类的访问特点，主要从以下几个角度研究：
 * 静态内部类内部访问外围类(重点)
 * 外围类访问静态内部类成员(重点)
 *      它们之间的访问,创建对象,直接访问,并且不受权限限制
 *
 * 外部类访问静态内部类成员(了解)
 *      全程受权限限制
 *
 * 静态内部类访问外部类成员(了解)
 *      全程受权限限制
 *
 * @since 17:31
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 外部类创建静态内部类对象,不需要创建外围类对象
        EnclosedClazz.NestedClazz nc = new EnclosedClazz.NestedClazz();
    }
}

// 外围类
class EnclosedClazz {
    int a;
    private int b;
    static int c;
    static final int D = 20;

    public void test(){
        NestedClazz nc = new NestedClazz();
        System.out.println(nc.b);
    }

    // 静态内部类
    static class NestedClazz {
        int a;
        private int b;
        static int c;
        static final int D = 20;

        static {
        }

        static void testStatic() {
            EnclosedClazz ec = new EnclosedClazz();
            System.out.println(ec.b);
        }

        void test() {
            EnclosedClazz ec = new EnclosedClazz();
            System.out.println(ec.b);
        }

        public NestedClazz() {
        }

        {
        }
    }
}